package com.bbva.itradecomex.controller.login;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;

import org.apache.log4j.Logger;
import org.primefaces.model.MenuModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.bbva.itradecomex.bo.iface.AccesoBO;
import com.bbva.itradecomex.domain.Usuario;
import com.bbva.itradecomex.util.MessageProvider;

@Controller
@RequestScoped
@ManagedBean
public class AccesoController {
	
	private static final Logger log = Logger.getLogger(AccesoController.class);
	
	@Autowired
	private AccesoBO accesoBO;
	
	private String usuario;
	private String password;
	private String messageErrorLogin;
	
	private MenuModel rootOpcionMenu;
	
	public void onPageLoad(ComponentSystemEvent event) {
		try {
			if (!FacesContext.getCurrentInstance().isPostback()) {
				usuario = null;
				password = null;
				messageErrorLogin = null;
				rootOpcionMenu = null;
			}
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage(),e);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
					MessageProvider.getInstance().getValue("MSG_ERROR_TITLE_GENERAL"),
					MessageProvider.getInstance().getValue("MSG_ERROR_DESCRIP_GENERAL")));
		}
	}
	
	public String login(){
		try {
			Usuario varUsuario = accesoBO.consultaValidarRegistro(usuario);
			if(varUsuario != null){
				rootOpcionMenu = accesoBO.cargarMenuOpciones(varUsuario);
				return "principal.xhtml?faces-redirect=true";
			}else{
				messageErrorLogin = MessageProvider.getInstance().getValue("MSG_ERROR_LOGIN_USER");
				return "login.xhtml?faces-redirect=false";
			}
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage(),e);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
					MessageProvider.getInstance().getValue("MSG_ERROR_TITLE_GENERAL"),
					MessageProvider.getInstance().getValue("MSG_ERROR_DESCRIP_GENERAL")));
			return "login.xhtml?faces-redirect=false";
		}
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getMessageErrorLogin() {
		return messageErrorLogin;
	}

	public void setMessageErrorLogin(String messageErrorLogin) {
		this.messageErrorLogin = messageErrorLogin;
	}

	public MenuModel getRootOpcionMenu() {
		return rootOpcionMenu;
	}

	public void setRootOpcionMenu(MenuModel rootOpcionMenu) {
		this.rootOpcionMenu = rootOpcionMenu;
	}
}